package com.ruoyi.predict.utils;

import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ScoreJsonParser {

    /**
     * 从AI返回的文本中提取所有分数项，转换为JSON数组字符串
     * @param aiResponse AI返回的原始评分文本
     * @return 包含所有能力项的JSON数组字符串
     */
    public static String parseToJson(String aiResponse) {
        // 1. 预处理：清除无关内容（如"AiMessage { text = "和"toolExecutionRequests = null }"）
        String cleanedText = aiResponse.replaceAll("^.*?text\\s*=\\s*\"", "") // 去除开头的"AiMessage { text = "
                .replaceAll("\"\\s*toolExecutionRequests\\s*=\\s*null\\s*}", "") // 去除结尾的冗余
                .replaceAll("\\s+", " ") // 合并多余空格（可选，优化格式）
                .trim();

        // 2. 正则表达式：精准匹配每一行的能力项、分数和描述
        // 匹配格式："1. 学习能力：90分。该人具有较强的学习能力..."
        Pattern pattern = Pattern.compile(
                "(\\d+)\\.\\s*(学习能力|实战能力|沟通协调能力|成就动机)：(\\d+)分\\s*。?(.*?)(?=\\n|\\d+\\.|$)",
                Pattern.DOTALL // 让.匹配换行符（防止描述跨多行）
        );

        Matcher matcher = pattern.matcher(cleanedText);
        JSONArray scoreArray = new JSONArray(); // 用JSON数组存储所有能力项

        // 3. 循环匹配所有能力项
        while (matcher.find()) {
            String type = matcher.group(2); // 能力类型（如"学习能力"）
            String score = matcher.group(3); // 分数（如"90"）
            String desc = matcher.group(4).trim(); // 描述（去除首尾空格）

            // 构建单个能力项的JSON对象
            JSONObject item = new JSONObject();
            item.put("title", type);
            item.put("score", score);
            item.put("desc", desc);

            scoreArray.add(item); // 添加到数组
        }

        return scoreArray.toString(); // 返回JSON数组字符串
    }
}